home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 52 / Amiga Format AFCD52 (Issue 136, May 2000).iso / +system+ / tools / gui / bgui.lha / bgui / Examples / Source / TextField.c < prev    next >
C/C++ Source or Header  |  2000-02-27  |  11KB  |  227 lines

  1. /*
  2.  * @(#) $Header: /cvsroot/bgui/examples/Attic/TextField.c,v 1.1.2.1 1999/07/30 22:11:47 mlemos Exp $
  3.  *
  4.  * TextField.c
  5.  *
  6.  * (C) Copyright 1998 Manuel Lemos.
  7.  * All Rights Reserved.
  8.  *
  9.  * $Log: TextField.c,v $
  10.  * Revision 1.1.2.1  1999/07/30 22:11:47  mlemos
  11.  * Initial revision.
  12.  *
  13.  *
  14.  *
  15.  */
  16.  
  17. #include "DemoCode.h"
  18.  
  19. #include <stdio.h>
  20. #include <stdlib.h>
  21. #include <string.h>
  22.  
  23. #include <intuition/icclass.h>
  24. #include <gadgets/textfield.h>
  25. #include <proto/textfield.h>
  26. #include <proto/iffparse.h>
  27.  
  28. /*
  29. **      Library base pointers.
  30. **/
  31. struct Library *TextFieldBase = NULL;
  32.  
  33. /*
  34. **      Object ID's
  35. **/
  36. #define ID_RIGHTPROP 1
  37. #define ID_TEXTFIELD 2
  38.  
  39. /*
  40. **      And were in...
  41. **/
  42. VOID StartDemo( void )
  43. {
  44.         Object                  *WN_Window, *GO_Textfield, *GO_Master, *GO_RightProp;
  45.         struct Window           *win;
  46.         ULONG                   winsig = 0L, sigrec, rc;
  47.         BOOL                    running = TRUE;
  48.  
  49.         /*
  50.         **      Open the libraries. Get display information etc...
  51.         **/
  52.         if ( TextFieldBase = OpenLibrary( TEXTFIELD_NAME, TEXTFIELD_VER )) {
  53.  
  54.                 struct ClipboardHandle *clip_handle, *undo_handle;
  55.                 struct IntuiText text1_title;
  56.  
  57.                 text1_title.FrontPen = 0;
  58.                 text1_title.BackPen = 1;  /* don't really need to set for JAM1 */
  59.                 text1_title.DrawMode = JAM1;
  60.                 text1_title.LeftEdge = 0;
  61.                 text1_title.TopEdge = 0;
  62.                 text1_title.ITextFont = NULL;
  63.                 text1_title.IText = NULL;
  64.                 text1_title.NextText = NULL;
  65.  
  66.                 /* Open the clipboard; no need to verify */
  67.                 clip_handle = OpenClipboard(0);
  68.                 undo_handle = OpenClipboard(42);
  69.  
  70.                 /*
  71.                 **      Create a small window.
  72.                 **/
  73.                 WN_Window = WindowObject,
  74.                         WINDOW_Title,           "Text field",
  75.                         WINDOW_RMBTrap,         TRUE,
  76.                         WINDOW_ScaleWidth,      20,
  77.                         WINDOW_ScaleHeight,     20,
  78.                         WINDOW_AutoAspect,      TRUE,
  79.  
  80.                         WINDOW_RBorderGroup,
  81.                             VGroupObject,
  82.                                StartMember,
  83.                                   GO_RightProp = PropObject,
  84.                                      PGA_Top,        0,
  85.                                      PGA_Total,      1,
  86.                                      PGA_Visible,    1,
  87.                                      PGA_Arrows,     TRUE,
  88.                                      PGA_Freedom,    FREEVERT,
  89.                                      PGA_NewLook,    TRUE,
  90.                                      GA_ID,          ID_RIGHTPROP,
  91.                                   EndObject,
  92.                                EndMember,
  93.                             EndObject,
  94.  
  95.                         WINDOW_MasterGroup,
  96.                                 GO_Master = VGroupObject, HOffset( 4 ), VOffset( 4 ), Spacing( 4 ),
  97.                                         StartMember,
  98.                                                 GO_Textfield = ExternalObject,
  99.                                                         EXT_MinWidth,           30,
  100.                                                         EXT_MinHeight,          30,
  101.                                                         EXT_Class,              TEXTFIELD_GetClass(),
  102.                                                         EXT_NoRebuild,          TRUE,
  103.  
  104.                                                         FRM_Type,               FRTYPE_RIDGE,
  105.  
  106.                                                         GA_FollowMouse,         TRUE,
  107.                                                         GA_IntuiText,           &text1_title,
  108.                                                         GA_ID,                  ID_TEXTFIELD,
  109.  
  110.                                                         TEXTFIELD_Text,         (ULONG)"Right Amiga C - Copy\nRight Amiga X - Cut\nRight Amiga V - Paste\n",
  111.                                                         TEXTFIELD_UserAlign,    TRUE,
  112.                                                         TEXTFIELD_BlinkRate,    500000,
  113.                                                         TEXTFIELD_TabSpaces,    4,
  114.                                                         TEXTFIELD_NonPrintChars,TRUE,
  115.                                                         TEXTFIELD_ClipStream,   clip_handle,
  116.                                                         TEXTFIELD_UndoStream,   undo_handle,
  117.  
  118.                                                 EndObject,
  119.                                         EndMember,
  120.                                 EndObject,
  121.                 EndObject;
  122.  
  123.                 if ( WN_Window ) {
  124.  
  125.                         /*
  126.                         **      Open up the window.
  127.                         **/
  128.                         if ( win = WindowOpen( WN_Window )) {
  129.                                 /*
  130.                                 **      Obtain window sigmask.
  131.                                 **/
  132.                                 GetAttr( WINDOW_SigMask, WN_Window, &winsig );
  133.                                 /*
  134.                                 **      Wait for messages.
  135.                                 **/
  136.                                 ActivateGadget((struct Gadget *)GO_Textfield,win,NULL);
  137.                                 do {
  138.                                         sigrec = Wait( winsig );
  139.  
  140.                                         /*
  141.                                         **      Window signal?
  142.                                         **/
  143.                                         if ( sigrec & winsig ) {
  144.                                                 while ( WN_Window && (( rc = HandleEvent( WN_Window )) != WMHI_NOMORE )) {
  145.                                                         switch ( rc ) {
  146.  
  147.                                                                 case    WMHI_CLOSEWINDOW:
  148.                                                                         /*
  149.                                                                         **      The end.
  150.                                                                         **/
  151.                                                                         running = FALSE;
  152.                                                                         break;
  153.  
  154.                                                                 case    ID_RIGHTPROP:
  155.                                                                 {
  156.                                                                         Object *object;
  157.                                                                         ULONG top,visible,total;
  158.  
  159.                                                                         GetAttr( EXT_Object, GO_Textfield, ( ULONG * )&object);
  160.                                                                         GetAttr( TEXTFIELD_Top, object, &top);
  161.                                                                         GetAttr( PGA_Visible, GO_RightProp, &visible);
  162.                                                                         GetAttr( PGA_Total, GO_RightProp, &total);
  163.                                                                         if(visible>total)
  164.                                                                                 visible=total;
  165.                                                                         SetGadgetAttrs((struct Gadget *)object,win,NULL,
  166.                                                                                 TEXTFIELD_Top,top,
  167.                                                                                 TEXTFIELD_Visible,visible,
  168.                                                                                 TEXTFIELD_Lines,total,
  169.                                                                                 TAG_END);
  170.                                                                 }
  171.  
  172.                                                                 case    ID_TEXTFIELD:
  173.                                                                 {
  174.                                                                         Object *object;
  175.                                                                         ULONG top,visible,total;
  176.  
  177.                                                                         GetAttr( EXT_Object, GO_Textfield, ( ULONG * )&object);
  178.                                                                         GetAttr( TEXTFIELD_Top, object, &top);
  179.                                                                         GetAttr( TEXTFIELD_Visible, object, &visible);
  180.                                                                         GetAttr( TEXTFIELD_Lines, object, &total);
  181.                                                                         if(visible>total)
  182.                                                                                 visible=total;
  183.                                                                         SetGadgetAttrs((struct Gadget *)GO_RightProp,win,NULL,
  184.                                                                                 PGA_Top,top,
  185.                                                                                 PGA_Visible,visible,
  186.                                                                                 PGA_Total,total,
  187.                                                                                 TAG_END);
  188.                                                                 }
  189.                                                         }
  190.                                                 }
  191.                                         }
  192.                                 } while ( running );
  193.                         }
  194.                         /*
  195.                         **      Kill the window.
  196.                         **/
  197.                         DisposeObject( WN_Window );
  198.                 }
  199.  
  200.                 /* Close the clipboard */
  201.                 if (undo_handle) {
  202.                     CloseClipboard(undo_handle);
  203.                 }
  204.                 if (clip_handle) {
  205.                     CloseClipboard(clip_handle);
  206.                 }
  207.  
  208.                 /*
  209.                 **      Close the textfield.gadget.
  210.                 **/
  211.                 CloseLibrary( TextFieldBase );
  212.         }
  213.         else
  214.         {
  215.                 struct bguiRequest   req;
  216.  
  217.                 memset(&req,'\0',sizeof(req));
  218.                 req.br_GadgetFormat  = "_Ok";
  219.                 req.br_TextFormat    = ISEQ_C "This program requires Mark Thomas' gadgets/textfield.gadget\ninstalled in your LIBS: directory.\n\n You may find it at: " ISEQ_U ISEQ_FILL "aminet://dev/gui/textfield.lha" ISEQ_N ".";
  220.                 req.br_Flags         = BREQF_AUTO_ASPECT|BREQF_FAST_KEYS;
  221.                 req.br_ReqPos        = POS_CENTERMOUSE;
  222.                 req.br_Underscore    = '_';
  223.  
  224.                 BGUI_RequestA( NULL, &req, NULL);
  225.         }
  226. }
  227.